import MockAdapter from 'axios-mock-adapter';

// 导入各模块Mock
import userMocks from './modules/user';
import caseMocks from './modules/case';

// 全局Mock配置状态
let isMockEnabled = true;

/**
 * 初始化Mock配置
 * @param {AxiosInstance} axiosInstance - Axios实例
 * @returns {MockAdapter} Mock适配器实例
 */
export const setupMock = (axiosInstance) => {

    console.log('[Mock] 初始化Mock配置');
    // 创建Mock适配器
    const mock = new MockAdapter(axiosInstance, {
        delayResponse: Number(import.meta.env.VITE_MOCK_DELAY || 500)
    });

    // 初始化各模块Mock
    userMocks(mock);
    caseMocks(mock);
// 模拟文件上传接口
    mock.onPost('/api/upload').reply((config) => {
        // 这里可以根据实际请求数据做更复杂的处理
        // 简单模拟返回成功响应
        return [200, {
            code: 200,
            data: {
                url: 'https://example.com/mock-upload-file.jpg' // 模拟文件上传后的URL
            },
            message: '上传成功'
        }];
    });

    // 模拟案件创建接口
    // mock.onPost('/createCase').reply((config) => {
    //     const caseData = JSON.parse(config.data);
    //     return [200, {
    //         code: 200,
    //         data: {
    //             id: Math.floor(Math.random() * 10000), // 模拟生成案件ID
    //             ...caseData
    //         },
    //         message: '案件创建成功'
    //     }];
    // });
    // 全局捕获未定义的API请求
    mock.onAny().reply(config => {
        console.warn(`[Mock] 未定义的API请求: ${config.method} ${config.url}`);
        return [404, {
            code: 404,
            message: 'Mock未定义此接口',
            config
        }];
    });

    // 开发环境打印Mock信息
    if (import.meta.env.DEV) {
        console.log('[Mock] Mock适配器已启动，拦截模式已启用');
    }

    return mock;
};

// Mock开关控制函数
export function toggleMock() {
    isMockEnabled = !isMockEnabled;
    console.log(`[Mock] ${isMockEnabled ? '启用' : '禁用'}模拟数据`);
}